#include <cstdio>
#include <algorithm>
#include <cstring>
#include <map>
using namespace std;
char s[30];
char t[1005][30];
int k;
struct Node{
    int cnt;
    Node* Next[26];
    Node(int x):cnt(x){
        for(int i=0;i<26;i++){
            Next[i]=NULL;
        }
    }
};
void insert(Node* &rt,char* s){
    int l=strlen(s);
    int val;
    Node* p=rt;
    for(int i=0;i<l;i++){
        val=s[i]-'a';
        if(p->Next[val]==NULL){
            p->Next[val]=new Node(0);
        }
        p=p->Next[val];
        p->cnt++;
    }
}
void find(Node* &rt,char* s){
    int l=strlen(s);
    Node* p=rt;
    int val;
    for(int i=0;i<l;i++){
        val=s[i]-'a';
        if(p->Next[val]==NULL){
            return;
        }
        p=p->Next[val];
        printf("%c",s[i]);
        if(p->cnt==1){
            return;
        }
    }
}
void clear(Node* a){
    if(a==NULL){
        return;
    }
    else{
        for(int i=0;i<26;i++){
            clear(a->Next[i]);
        }
    }
    delete(a);
}
int main(void){
    //freopen("data.txt","r",stdin);
    Node* root=new Node(0);
    while(~scanf("%s",s)){
        insert(root,s);
        strcpy(t[k++],s);
    }
    for(int i=0;i<k;i++){
        printf("%s ",t[i]);
        find(root,t[i]);
        printf("\n");
    }
    return 0;
}
